/**
 * 
 */
package net.danielpaz.puc.poo.frigorifico.view;


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import net.danielpaz.puc.poo.frigorifico.controller.FornecedorController;
import net.danielpaz.puc.poo.frigorifico.model.FornecedorDAO;
class TelaPedido extends JFrame {
    JLabel label0, label1, label2;
    JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar, btSair;
    static JTextField tfId, tfNome, tfCNPJ;
    private FornecedorController fornecedorController;
    
    public static void main(String args[]) {
        JFrame janela = new TelaPedido();
        janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        janela.setVisible(true);
    }

    public TelaPedido() {
        inicializarComponentes();
        definirEventos();
    }
    
    public void inicializarComponentes() {
        setLayout(new FlowLayout(FlowLayout.LEFT));
        setTitle("Cadastramento de fornecedorController.getFornecedores()");
        setSize(600, 480);
        label0 = new JLabel("ID");
        label1 = new JLabel("Nome");
        label2 = new JLabel("CNPJ");
        tfId = new JTextField(7);
        tfNome = new JTextField(20);
        tfCNPJ = new JTextField(20);
        btGravar = new JButton(null,null);
        btGravar.setText("Gravar");
        btGravar.setToolTipText("Gravar");
        btAlterar = new JButton(null,null);
        btAlterar.setText("Alterar");
        btAlterar.setToolTipText("Alterar");
        btExcluir = new JButton(null,null);
        btExcluir.setText("Excluir");
        btExcluir.setToolTipText("Excluir");
        btLocalizar = new JButton(null,null);
        btLocalizar.setText("Localizar");
        btLocalizar.setToolTipText("Localizar");
        btNovo = new JButton(null,null);
        btNovo.setText("Novo");
        btNovo.setToolTipText("Novo");
        btCancelar = new JButton(null,null);
        btCancelar.setText("Cancelar");
        btCancelar.setToolTipText("Cancelar");
        btSair = new JButton(null,null);
        btSair.setText("Sair");
        btSair.setToolTipText("Sair");
        
        add(label0);
        add(tfId);
        add(label1);
        add(tfNome);
        add(label2);
        add(tfCNPJ);
        add(btNovo);
        add(btLocalizar);
        add(btGravar);
        add(btAlterar);
        add(btExcluir);
        add(btCancelar);
        add(btSair);
        setResizable(false);
        setBotoes(true, true, false, false, false, false);
        fornecedorController.setFornecedores(new FornecedorDAO());
        if (!fornecedorController.getFornecedores().bd.getConnection()) {
            JOptionPane.showMessageDialog(null, "Falha na conexao, o sistema sera fechado!");
            System.exit(0);
        }
    }

    public void definirEventos() {
        btSair.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                fornecedorController.getFornecedores().bd.close();
                System.exit(0);
            }
        });
        btNovo.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            limpaCampos();
            setBotoes(false, false, true, false, false, true);
            }
        });
        btCancelar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            limpaCampos();
            }
        });
        btGravar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               if(tfNome.getText().equals("")){
                   JOptionPane.showMessageDialog(null, "O nome n�o pode ser vazio!");
                   tfNome.requestFocus();
                   return;
               }
               if(tfCNPJ.getText().equals("")){
                   JOptionPane.showMessageDialog(null, "O CNPJ n�o pode ser vazio!");
                   tfCNPJ.requestFocus();
                   return;
               }
               fornecedorController.getFornecedores().fornecedor.setId(getNovoID());
               fornecedorController.getFornecedores().fornecedor.setNome(tfNome.getText());
               fornecedorController.getFornecedores().fornecedor.setCnpj(tfCNPJ.getText());
               JOptionPane.showMessageDialog(null, fornecedorController.getFornecedores().atualizar(FornecedorDAO.INCLUSAO));
               limpaCampos();
            }
        });
        btAlterar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            	fornecedorController.getFornecedores().fornecedor.setId(Integer.parseInt(tfId.getText()));
                fornecedorController.getFornecedores().fornecedor.setNome(tfNome.getText());
                fornecedorController.getFornecedores().fornecedor.setCnpj(tfCNPJ.getText());
               JOptionPane.showMessageDialog(null, fornecedorController.getFornecedores().atualizar(FornecedorDAO.ALTERACAO));
               limpaCampos();
            }
        });
        btExcluir.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               fornecedorController.getFornecedores().fornecedor.setId(Integer.parseInt(tfId.getText()));
               fornecedorController.getFornecedores().localizar();
               int n = JOptionPane.showConfirmDialog(null, fornecedorController.getFornecedores().fornecedor.getNome(), " Excluir o Filme? ", JOptionPane.YES_NO_OPTION);
               if (n == JOptionPane.YES_OPTION){
                  JOptionPane.showMessageDialog(null, fornecedorController.getFornecedores().atualizar(FornecedorDAO.EXCLUSAO));
                  limpaCampos();
               }
            }
        });
        btLocalizar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                atualizaCampos();
            }
        });
    }

    protected int getNovoID() {
		// TODO Implementar busca do ultimo id e somar mais um
		return 0;
	}

	public void limpaCampos() {
		tfId.enable(false);
		tfId.setText("");
		tfNome.setText("");
		tfCNPJ.setText("");
        setBotoes(true, true, false, false, false, false);
    }

    public void atualizaCampos() {
    		fornecedorController.getFornecedores().fornecedor.setId(Integer.parseInt(tfId.getText()));
            if(fornecedorController.getFornecedores().localizar()){
        		tfId.setText(Integer.toString(fornecedorController.getFornecedores().fornecedor.getId()));
        		tfNome.setText(fornecedorController.getFornecedores().fornecedor.getNome());
        		tfCNPJ.setText(fornecedorController.getFornecedores().fornecedor.getCnpj());
                setBotoes(true, true, false, true, true, true);
            }
            else{
                JOptionPane.showMessageDialog(null, "Fornecedor nao encontrado!");
                limpaCampos();
            }
    }

    public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar, boolean bAlterar, boolean bExcluir, boolean bCancelar) {
        btNovo.setEnabled(bNovo);
        btLocalizar.setEnabled(bLocalizar);
        btGravar.setEnabled(bGravar);
        btAlterar.setEnabled(bAlterar);
        btExcluir.setEnabled(bExcluir);
        btCancelar.setEnabled(bCancelar);
    }
}